package com.dzu.easy;

/**
 * @author ZhaoDong
 * @date 2022/8/23 9:33
 * @description 1332. 删除回文子序列
 * 给你一个字符串 s，它仅由字母 'a' 和 'b' 组成。每一次删除操作都可以从 s 中删除一个回文 子序列。
 *
 * 返回删除给定字符串中所有字符（字符串为空）的最小删除次数。
 *
 * 「子序列」定义：如果一个字符串可以通过删除原字符串某些字符而不改变原字符顺序得到，那么这个字符串就是原字符串的一个子序列。
 *
 * 「回文」定义：如果一个字符串向后和向前读是一致的，那么这个字符串就是一个回文。
 *
 *  
 *
 * 示例 1：
 *
 * 输入：s = "ababa"
 * 输出：1
 * 解释：字符串本身就是回文序列，只需要删除一次。
 * 示例 2：
 *
 * 输入：s = "abb"
 * 输出：2
 * 解释："abb" -> "bb" -> "".
 * 先删除回文子序列 "a"，然后再删除 "bb"。
 * 示例 3：
 *
 * 输入：s = "baabb"
 * 输出：2
 * 解释："baabb" -> "b" -> "".
 * 先删除回文子序列 "baab"，然后再删除 "b"。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/remove-palindromic-subsequences
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 *  !!! 发现题目中其实有一个很重要的信息，那就是每次可以被移除的是一个回文子序列。!! 不是回文子字符串，不是回文子字符串，不是回文子字符串！!重要的事情说三编。凑字数
 *
 * 为什么我会说这一个信息非常重要呢，重要到直接回归到了 EASY 的难度。下面我们举个例子吧：
 *
 * 现在我有一个原始字符串是 'aababbaabaabbabbaaabbabbbaabba'。那么它的子字符串是什么，就是截取其中连续的一串，例如 'babbaa'。而它的子序列是什么呢，就是不打乱顺序的从中随意取出字符，凑成一串，例如 'aaaa'。
 *
 * 作者：poppinl
 * 链接：https://leetcode.cn/problems/remove-palindromic-subsequences/solution/bao-bao-ye-neng-kan-dong-de-leetcode-ti-jie-shen-t/
 * 来源：力扣（LeetCode）
 * 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
 */
public class Test1332 {

    public int removePalindromeSub(String s) {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < s.length(); i++) {
            sb.append(s.charAt(i));
        }
        StringBuffer reverse = new StringBuffer(sb).reverse();

        if (reverse.toString().equals(sb.toString())) {
            return 1;
        }

        return 2;

    }
}
